Suspending T


\begin{inset}{Caution:}
The following is somewhat Sun specific.
\end{inset}

A system is suspended as follows:


\begin{codexenv}
\% t -h 8000000 \char93  as big as possible \\
\par
$>$\ ;; lo...
...implementation-env 'system-suspend) filespec nil) \\
$>$\ (exit)
\end{codexenv}

If a GC occurs during the suspend it will hang. This means that the heap was not big enough.

The binary distributions are a directory called ``tsystem''. In that directory are a bunch of files including a script called ``linkt'' which takes a .o file produced by suspend and creates an executable.


\begin{codexenv}
\% cd tsystem \\
\% linkt filespec.o newimage
\end{codexenv}

If the code to be loaded before suspending a system contains DEFINE-FOREIGN forms, files containing these forms should be loaded inside of:


(bind (((*value t-implementation-env 'make-foreign-procedure)  

(*value t-implementation-env 'make-foreign)))
(load file1)
... )

In this case, the linkt script must be modified to .o files that are referenced by the DEFINE-FOREIGN expressions.

System building:

It is possible to build a system from the sources. The tsystem directory contains a file, i.e. ``sunbuild.t'' which explains how.